home *** CD-ROM | disk | FTP | other *** search
/ MacFormat 1995 January / macformat-020.iso / Shareware City / Developers / OutOfPhase1.01Source / OutOfPhase Folder / CompilerScanner.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-10-01  |  2.9 KB  |  119 lines  |  [TEXT/KAHL]

  1. /* CompilerScanner.h */
  2.  
  3. #ifndef Included_CompilerScanner_h
  4. #define Included_CompilerScanner_h
  5.  
  6. /* CompilerScanner module depends on */
  7. /* MiscInfo.h */
  8. /* Audit */
  9. /* Debug */
  10. /* Definitions */
  11. /* TrashTracker */
  12. /* DataMunging */
  13. /* StringThing */
  14. /* Numbers */
  15. /* FixedPoint */
  16.  
  17. #include "FixedPoint.h"
  18.  
  19. struct ScannerRec;
  20. typedef struct ScannerRec ScannerRec;
  21.  
  22. struct TokenRec;
  23. typedef struct TokenRec TokenRec;
  24.  
  25. /* forward */
  26. struct TrashTrackRec;
  27.  
  28. /* all blocks are allocated with TrashTracker */
  29.  
  30. /* token type */
  31. typedef enum
  32.     {
  33.         eTokenIdentifier EXECUTE(= -8438),
  34.         eTokenString,
  35.         eTokenInteger,
  36.         eTokenSingle,
  37.         eTokenDouble,
  38.         eTokenFixed,
  39.  
  40.         eTokenKeyword,
  41.  
  42.         eTokenOpenParen, /* ( */
  43.         eTokenCloseParen, /* ) */
  44.         eTokenOpenBracket, /* [ */
  45.         eTokenCloseBracket, /* ] */
  46.         eTokenColon, /* : */
  47.         eTokenSemicolon, /* ; */
  48.         eTokenComma, /* , */
  49.         eTokenColonEqual, /* := */
  50.         eTokenPlus, /* + */
  51.         eTokenMinus, /* - */
  52.         eTokenStar, /* * */
  53.         eTokenSlash, /* / */
  54.         eTokenEqual, /* = */
  55.         eTokenNotEqual, /* <> */
  56.         eTokenLessThan, /* < */
  57.         eTokenLessThanOrEqual, /* <= */
  58.         eTokenGreaterThan, /* > */
  59.         eTokenGreaterThanOrEqual, /* >= */
  60.         eTokenShiftLeft, /* << */
  61.         eTokenShiftRight, /* >> */
  62.         eTokenCircumflex, /* ^ */
  63.  
  64.         eTokenEndOfInput,
  65.  
  66.         eTokenError
  67.     } TokenTypes;
  68.  
  69. typedef enum
  70.     {
  71.         eScannerMalformedFloat EXECUTE(= -27517),
  72.         eScannerUnknownCharacter
  73.     } ScannerErrors;
  74.  
  75. /* create a scanner information record */
  76. ScannerRec*                    NewScanner(struct TrashTrackRec* TrashTracker, char* RawData);
  77.  
  78. /* add a token to the scanner.  Keyword is a null terminated statically */
  79. /* allocated string */
  80. void                                AddKeywordToScanner(ScannerRec* Scanner, char* Keyword, long Tag);
  81.  
  82. /* get the line number (starting at 1) that the scanner is on right now */
  83. long                                GetCurrentLineNumber(ScannerRec* Scanner);
  84.  
  85. /* get a token */
  86. TokenRec*                        GetNextToken(ScannerRec* Scanner);
  87.  
  88. /* push a token back onto the token stream */
  89. void                                UngetToken(ScannerRec* Scanner, TokenRec* Token);
  90.  
  91. /* get the type of a token */
  92. TokenTypes                    GetTokenType(TokenRec* Token);
  93.  
  94. /* get the string associated with an identifier */
  95. char*                                GetTokenIdentifierString(TokenRec* Token);
  96.  
  97. /* get the string associated with a string token */
  98. char*                                GetTokenStringValue(TokenRec* Token);
  99.  
  100. /* get the integer value associated with an integer token */
  101. long                                GetTokenIntegerValue(TokenRec* Token);
  102.  
  103. /* get the single precision value associated with a single float token */
  104. float                                GetTokenSingleValue(TokenRec* Token);
  105.  
  106. /* get the double precision value associated with a double float token */
  107. double                            GetTokenDoubleValue(TokenRec* Token);
  108.  
  109. /* get the fixed precision value associated with a fixed token */
  110. largefixedsigned        GetTokenFixedValue(TokenRec* Token);
  111.  
  112. /* get the tag associated with a keyword token */
  113. long                                GetTokenKeywordTag(TokenRec* Token);
  114.  
  115. /* get the error code associated with an error token */
  116. ScannerErrors                GetTokenErrorCode(TokenRec* Token);
  117.  
  118. #endif
  119.